// Min
/*
------------------------------------------------------
作者   : Black Ghost
日期   : 2018-11-19
版本   : 0.0.0
------------------------------------------------------
    向量第一个绝对值最小值及其位置
------------------------------------------------------
输入   :
    a       a 被处理向量
输出   :
    sol     解值
    ii      第一个绝对值最小值位置
    err     解出标志：false-未解出或达到步数上限；
                     true-全部解出
------------------------------------------------------
*/

package goNum

import (
	"math"
)

// MinAbs 向量第一个绝对值最小值及其位置
func MinAbs(a []float64) (float64, int, bool) {
	/*
		向量第一个绝对值最小值及其位置
		输入   :
		    a       a 被处理向量
		输出   :
		    sol     解值
		    ii      第一个最大值位置
		    err     解出标志：false-未解出或达到步数上限；
		                     true-全部解出
	*/
	var sol float64
	var ii int
	var err bool = false

	n := len(a)
	ii = 0
	sol = a[ii]
	for i := 1; i < n; i++ {
		if math.Abs(sol) > math.Abs(a[i]) {
			ii = i
			sol = a[i]
		}
	}

	err = true
	return sol, ii, err
}
